home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 676-700 / 681 / term / source.lha / CommandPanel.c < prev    next >
C/C++ Source or Header  |  1992-05-09  |  6KB  |  198 lines

  1. /*
  2. **    $Id: CommandPanel.c,v 1.4 92/04/21 16:58:26 olsen Sta Locker: olsen $
  3. **    $Revision: 1.4 $
  4. **    $Date: 92/04/21 16:58:26 $
  5. **
  6. **    Editing panel for command sequences
  7. **
  8. **    Copyright © 1990-1992 by Olaf `Olsen' Barthel & MXM
  9. **        All Rights Reserved
  10. */
  11.  
  12. #include "termGlobal.h"
  13.  
  14. enum    {    GAD_STARTUP,GAD_UPLOAD,GAD_DOWNLOAD,GAD_USE,GAD_CANCEL };
  15.  
  16. #define WIDTH    444
  17. #define HEIGHT    75
  18.  
  19. STATIC struct Gadget *
  20. CreateAllGadgets(struct Configuration *Config,struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  21. {
  22.     struct Gadget        *Gadget;
  23.     struct NewGadget     NewGadget;
  24.     UWORD             Counter = 0;
  25.  
  26.     memset(&NewGadget,0,sizeof(struct NewGadget));
  27.  
  28.     if(Gadget = CreateContext(GadgetList))
  29.     {
  30.         NewGadget . ng_Width        = 264;
  31.         NewGadget . ng_Height        = 14;
  32.         NewGadget . ng_GadgetText    = LocaleString(MSG_COMMANDPANEL_STARTUP_LOGIN_MACRO_GAD);
  33.         NewGadget . ng_TextAttr        = &DefaultFont;
  34.         NewGadget . ng_VisualInfo    = VisualInfo;
  35.         NewGadget . ng_GadgetID        = Counter;
  36.         NewGadget . ng_Flags        = 0;
  37.         NewGadget . ng_LeftEdge        = 170;
  38.         NewGadget . ng_TopEdge        = 1 + TopEdge;
  39.  
  40.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  41.             GT_Underscore,    '_',
  42.             GTST_MaxChars,    255,
  43.             GTST_String,    Config -> StartupMacro,
  44.             GTST_EditHook,    &CommandHook,
  45.             GA_Immediate,    TRUE,
  46.         TAG_DONE);
  47.  
  48.         NewGadget . ng_GadgetText    = LocaleString(MSG_COMMANDPANEL_UPLOAD_MACRO_GAD);
  49.         NewGadget . ng_GadgetID        = Counter;
  50.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  51.  
  52.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  53.             GT_Underscore,    '_',
  54.             GTST_MaxChars,    255,
  55.             GTST_String,    Config -> UploadMacro,
  56.             GTST_EditHook,    &CommandHook,
  57.             GA_Immediate,    TRUE,
  58.         TAG_DONE);
  59.  
  60.         NewGadget . ng_GadgetText    = LocaleString(MSG_COMMANDPANEL_DOWNLOAD_MACRO_GAD);
  61.         NewGadget . ng_GadgetID        = Counter;
  62.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  63.  
  64.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  65.             GT_Underscore,    '_',
  66.             GTST_MaxChars,    255,
  67.             GTST_String,    Config -> DownloadMacro,
  68.             GTST_EditHook,    &CommandHook,
  69.             GA_Immediate,    TRUE,
  70.         TAG_DONE);
  71.  
  72.         NewGadget . ng_Width        = 88;    /* NEW 52 */
  73.         NewGadget . ng_Height        = 12;
  74.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_USE_GAD);
  75.         NewGadget . ng_GadgetID        = Counter;
  76.         NewGadget . ng_Flags        = 0;
  77.         NewGadget . ng_LeftEdge        = 10;
  78.         NewGadget . ng_TopEdge        = HEIGHT - 3 - NewGadget . ng_Height;
  79.  
  80.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  81.             GT_Underscore,    '_',
  82.         TAG_DONE);
  83.  
  84.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_CANCEL_GAD);
  85.         NewGadget . ng_GadgetID        = Counter;
  86.         NewGadget . ng_LeftEdge        = WIDTH - 10 - NewGadget . ng_Width;
  87.  
  88.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  89.             GT_Underscore,    '_',
  90.         TAG_DONE);
  91.     }
  92.  
  93.     return(Gadget);
  94. }
  95.  
  96. VOID
  97. CommandPanel(struct Configuration *Config)
  98. {
  99.     struct Window    *PanelWindow;
  100.     struct Gadget    *GadgetList = NULL;
  101.     struct Gadget    *GadgetArray[GAD_CANCEL + 1];
  102.  
  103.     CopyMem(Config,&PrivateConfig,sizeof(struct Configuration));
  104.  
  105.     if(CreateAllGadgets(Config,&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  106.     {
  107.         if(PanelWindow = OpenWindowTags(NULL,
  108.             WA_Left,    (Screen -> Width - WIDTH) >> 1,
  109.             WA_Top,        (Screen -> Height - HEIGHT) >> 1,
  110.             WA_Width,    WIDTH,
  111.             WA_Height,    HEIGHT,
  112.  
  113.             WA_Activate,    TRUE,
  114.             WA_DragBar,    TRUE,
  115.             WA_DepthGadget,    TRUE,
  116.             WA_RMBTrap,    TRUE,
  117.             WA_DepthGadget,    TRUE,
  118.             WA_CloseGadget,    TRUE,
  119.             WA_CustomScreen,Screen,
  120.  
  121.             WA_IDCMP,    IDCMP_GADGETDOWN | IDCMP_ACTIVEWINDOW | IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY | BUTTONIDCMP | STRINGIDCMP,
  122.  
  123.             WA_Title,    LocaleString(MSG_COMMANDPANEL_COMMAND_PREFERENCES_GAD),
  124.         TAG_DONE))
  125.         {
  126.             struct IntuiMessage    *Massage;
  127.             ULONG             Class,Code;
  128.             struct Gadget        *Gadget;
  129.             BYTE             Terminated = FALSE;
  130.  
  131.             PushWindow(PanelWindow);
  132.  
  133.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  134.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  135.             GT_RefreshWindow(PanelWindow,NULL);
  136.  
  137.             ActiveGadget = NULL;
  138.  
  139.             while(!Terminated)
  140.             {
  141.                 WaitPort(PanelWindow -> UserPort);
  142.  
  143.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  144.                 {
  145.                     Class    = Massage -> Class;
  146.                     Code    = Massage -> Code;
  147.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  148.  
  149.                     GT_ReplyIMsg(Massage);
  150.  
  151.                     if(Class == IDCMP_VANILLAKEY)
  152.                         KeySelect(GadgetArray,GAD_CANCEL,Code,PanelWindow,&Gadget,&Class,&Code);
  153.  
  154.                     if(Class == IDCMP_ACTIVEWINDOW && ActiveGadget)
  155.                         ActivateGadget(ActiveGadget,PanelWindow,NULL);
  156.  
  157.                     if(Class == IDCMP_GADGETDOWN)
  158.                     {
  159.                         if((Gadget -> GadgetType & GTYP_GTYPEMASK) == GTYP_STRGADGET)
  160.                             ActiveGadget = Gadget;
  161.                     }
  162.  
  163.                     if(Class == IDCMP_CLOSEWINDOW)
  164.                         Terminated = TRUE;
  165.  
  166.                     if(Class == IDCMP_GADGETUP)
  167.                     {
  168.                         switch(Gadget -> GadgetID)
  169.                         {
  170.                             case GAD_USE:        Terminated = TRUE;
  171.  
  172.                                         strcpy(Config -> StartupMacro,    GT_STRING(GadgetArray[GAD_STARTUP]));
  173.                                         strcpy(Config -> UploadMacro,    GT_STRING(GadgetArray[GAD_UPLOAD]));
  174.                                         strcpy(Config -> DownloadMacro,    GT_STRING(GadgetArray[GAD_DOWNLOAD]));
  175.  
  176.                                         break;
  177.  
  178.                             case GAD_CANCEL:    Terminated = TRUE;
  179.  
  180.                                         break;
  181.  
  182.                             default:        break;
  183.                         }
  184.                     }
  185.                 }
  186.             }
  187.  
  188.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  189.  
  190.             PopWindow();
  191.  
  192.             CloseWindow(PanelWindow);
  193.         }
  194.     }
  195.  
  196.     FreeGadgets(GadgetList);
  197. }
  198.